Représentation des données : types et valeurs de base

Types et valeurs de base

Binaire & différentes bases

Encodage de l'information

Objectifs :
  • Codage des nombres entiers naturels
    • Connaître les bases binaire, décimale & héxadécimale
    • Passer d'une base à l'autre
    • Effectuer des opérations simple dans les différentes bases
  • Codage des caractères (normes ASCII et UTF-8)
A visionner :
Le Binaire - Nombre et Base [5 Minutes Pour]

L'horloger excentrique

L'horloger excentrique

Un horloger excentrique a eu l’idée de fabriquer une montre sur laquelle l’heure est indiquée par 10 diodes électroluminescentes appelées

  • 1 h, 2 h, 4 h, 8 h,
  • 1 min, 2 min, 4 min, 8 min, 16 min et 32 min.


Pour connaître l’heure, il suffit d’ajouter la valeur de toutes les diodes allumées.

L'horloger excentrique ?

1) Quelle heure est-il ?

L'horloger excentrique ?

2) Quelle heure est-il ?

L'horloger excentrique ?

Qu'affiche l'horloge quand il est 10h 20 ?

L'horloger excentrique ?

Qu'affiche l'horloge quand il est 21h 43 ?

L'horloger excentrique ?

Quelles sont les élements important de cette horloge ? Trouve une autre représentation pour afficher 21h43.

Code binaire

Le codage binaire

Un code binaire représente des informations en n’utilisant que deux états différents.
En général,on représente les éléments binaires (appelé bit) par des 0 et des 1.
Mais on peut représenter aussi bien une alternative logique, exprimée par vrai / faux, ou allumé / éteint qu'un chiffre du système binaire.

Le trigramme : Ba Gua


De la base 2 à la base 10.

0_{\overline{10}} =
1_{\overline{10}} =
2_{\overline{10}} =
3_{\overline{10}} =
4_{\overline{10}} =
...

De la base 2 à la base 10.

0_{\overline{10}} = 0_{\overline{2}}
1_{\overline{10}} =
2_{\overline{10}} =
3_{\overline{10}} =
4_{\overline{10}} =
...

De la base 2 à la base 10.

0_{\overline{10}} = 0_{\overline{2}}
1_{\overline{10}} = 1_{\overline{2}}
2_{\overline{10}} =
3_{\overline{10}} =
4_{\overline{10}} =
...

Convertir un nombre binaire en décimal


Pour convertir un mot binaire en nombre décimal, il suffit de multiplier la valeur de chaque bit par son poids, puis d'additionner chaque résultat.


Convertir un nombre binaire en décimal

Le mot binaire 1101 vaut en décimal :


1101_{\overline{2}} = 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 +1 \times 2^0

Convertir un nombre binaire en décimal

Le mot binaire 1101 vaut en décimal :


1101_{\overline{2}} = 1 \times 8 + 1 \times 4 + 0 \times 2 +1 \times 1

Convertir un nombre binaire en décimal

Le mot binaire 1101 vaut en décimal :


1101_{\overline{2}} = 8 + 4 + 1

Convertir un nombre binaire en décimal

Le mot binaire 1101 vaut en décimal :


1101_{\overline{2}} = 13_{\overline{2}}

Notation

Parmis notations pour les nombres représentés en binaire, on retrouve principalement : .
1101_{\overline{2}} \Longleftrightarrow 0b1101

Exercice 1 : Conversion en décimal.

Trouvez l’écriture décimale des nombres suivants :
  1. 101_{\overline{2}}
  2. 100101_{\overline{2}}
  3. 10111_{\overline{2}}

Exercice 1 : Conversion en décimal.

Trouvez l’écriture décimale des nombres suivants :
  1. 1001_{\overline{2}}
  2. 100101_{\overline{2}}
  3. 10111_{\overline{2}}

Convertir un nombre décimal en binaire

Pour convertir la représentation d'un nombre décimale en représentation binaire, il y a 2 méthodes
  • A l'aide des puissances de 2
  • A l'aide de divisions succéssives

A l'aide des puissance de 2

25_{\overline{10}} = 16 + 8 + 1
25_{\overline{10}} = 1 \times 16 + 1 \times 8 + 0 \times 4 + 0 \times 2 + 1 \times 1
25_{\overline{10}} = {\color{orange} 1} \times 2^4 + {\color{orange} 1} \times 2^3 + {\color{orange} 0} \times 2^2 + {\color{orange} 0} \times 2^1 + {\color{orange} 1} \times 1

On a donc :
25_{\overline{10}} = {\color{orange} 11001}_{\overline{2}}

Toujours l'aide des puissance de 2

25_{\overline{10}} = 16 + 8 + 1
25_{\overline{10}} = 2^4 + 2^3 + 1
25_{\overline{10}} = 10000_{\overline{2}} + 1000_{\overline{2}} + 1

On a donc :
25_{\overline{10}} = {\color{orange} 11001}_{\overline{2}}

Convertir un nombre décimal en binaire

A l'aide de divisions succéssives : ...

Exercice 2

Exercice 3

Exercice 4

TP : Convertisseur

  • Ecrire un programme qui converti la représentation d'un nombre binaire en représentation décimal
  • Ecrire un programme qui converti la représentation d'un nombre décimale en représentation binaire

Integer Owerflow

Integer Owerflow

Un dépassement d'entiers (integer overflow) est, en informatique, une condition qui se produit lorsqu'une opération mathématique produit une valeur numérique supérieure à celle représentable dans l'espace de stockage disponible.
Source : Wikipédia

Valeur maximale

Le plus grand entier représentable dépend du nombre de bits qui lui est associé.
Nombre de bits Valeur maximale Calcul
8 255 2^8-1
16 ... ...
32 ... ...
64 ... ...
128 ... ...



Exercice

  • Combien d'entiers peut-on coder en binaire sur 7 bits ? Quelle est le plus grand entier que l'on puisse coder en partant de 0 (0 inclus) ?
  • Combien d'entiers peut-on coder en binaire sur 18 bits ? Quelle est le plus grand entier que l'on puisse coder en partant de 0 (0 inclus) ?

Exercice

  • Combien faut-il de chiffres binaires pour pouvoir représenter tous les nombres entiers de 0 à 99 ?
  • Combien faut-il de chiffres binaires pour pouvoir représenter tous les nombres entiers de 0 à 19 999 ?
  • Opérations

    Addition

    En base 2,les règle et l'algorithme opératoire sont les mêmes qu'en base 10.
    • 0 + 1 = 1 + 0 = 1
    • 1 + 1 = 10

    Addition

    11010 11100010
    + 10001 + 10011


    10100011 11111
    + 11100111 + 11111

    La base hexadécimale

    Convesion

    On désire convertir le mot NSI en code binaire, à l'aide de la table ASCII. On a pour cela des informations suivantes :

    Quel est le code binaire correspondant à NSI

    Pourquoi l'hexadécimal

    Le codage hexadécimal est particulièrement commode car il permet un compromis entre le code binaire des machines et une base de numération pratique à utiliser pour les ingénieurs.
    En effet, chaque chiffre hexadécimal correspond exactement à quatre chiffres binaires (ou bits), rendant les conversions très simples et fournissant une écriture plus compacte.
    L'hexadécimal a été utilisé la première fois en 1956 par les ingénieurs de l'ordinateur Bendix G-15.
    source : Wikipédia

    Les chiffres en hexadécimal

    Pour écrire un nombre en base 16, il faut disposer d’un caractère pour chacun des entiers de 0 à 15.
    Or, on ne dispose pas d’assez de chiffres pour écrire les 16 chiffres de la base 16.
    On complète donc les chiffres de 0 à 9 par les six premières lettres de l’alphabet : A, B, C, D, E et F

    Les chiffres en hexadécimal

    En base 10 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    En base 16 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11
    En base 2 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001

    Notation

    Il existe plusieurs notations pour les nombres codés en hexadécimal :


    A2E_{\overline{16}} \Leftrightarrow 0\text{x}A2E \Leftrightarrow A2E_{\text{hex}}

    Conversion binaire vers décimale

    Quelle est la représentation du nombre 110100111000100_{\overline{2}} en hexadécimal ?
    • On sépare en bloc de 4 bits (en partant de la droite)
      110~~1001~~1100~~~~0100
    • On converti chacun des blocs :
      • \underbrace{0110}_{6}
      • \underbrace{1001}_{9}
      • \underbrace{1100}_{C}
      • \underbrace{0100}_{4}
    • 110100111000100_{\overline{2}} = 69C4_{\overline{16}}

    Conversion binaire vers décimale

    Donner la représentation des nombres suivants en hexadécimale
    • 10010010_{2}
    • 10011101001110011001_{2}
    • 1110111011111010010100_{2}

    Conversion binaire vers décimale

    Donner la représentation binaire des nombres suivants
    • E6_{16}
    • FF_{16}
    • 13FE89A_{16}

    Opérations

    Pose et effectue les opérations suivantes :
    • 16 + B7
    • AE + 3
    • ABC + EF1

    Codage des caractères

    ASCII

    En 1960, le developpement de l’informatique est essentiellement anglophone. A cette époque, le codage ASCII, pour American Standard Code for Information Interchange est crée pour écrire des textes en anglais. Cette norme ne définissait que 128 = 2^7 codes.
    Les 95 caractères sont imprimables :
    • les chiffres de 0 à 9,
    • les lettres minuscules de a à z et les majuscules de A à Z,
    • des symboles mathématiques et de ponctuation

    Représentation en ASCII

    Trouver la représentation binaire en ASCII du texte
    « Info. »

    Représentation en ASCII

    Décoder le texte ci-dessous
    1010011   1100001   1101100   1110101   1110100

    Comment coder ce message

    Comment coder ce message ?
    « NSI à fond en 2023 »

    ISO-8859

    La nécessité de représenter des textes comportant des caractères non présents dans la table ASCII tels ceux de l'alphabet latin utilisés en français comme le 'à', le 'é' ou le 'ç' impose l'utilisation d'un autre codage que l'ASCII.
    Afin de faciliter les choses, ces propositions sont des extensions du codage ASCII:
    • le codage des caractères présents dans la table ASCII est conservé ;
    • le principe du codage de chacun des caractères sur un octet est conservé.

    Mais les 8 bits de l'octet vont être utilisés. Cela permet de coder 2^8 = 256 caractères, soit 128 caractères supplémentaires.
    L'ISO, organisation internationale de normalisation, propose de son côté plusieurs variantes de codages adaptées aux différentes langues. La plus utilisée concerne les langues européennes occidentales. Il s'agit de l'ISO-8859-1

    Et les autres caractères ...

    • Le chinois courant : 3 000 à 5 000 sinogrammes (40 000 si on les compte tous)
    • Le japonais courant : 2.000 kanji (6 000 si on les compte tous) + les katakanas (46) et les hiraganas (46)
    • Le khmer : 33 graphèmes (35 si on les compte tous)
    • Le thaïlandais : 42 graphèmes (44 si on les compte tous)
    • ...
    • et les emojis 😀

    Le codage UTF-8

    UTF = UCS Transformation Format (UCS = Universal Character Set, norme ISO-10646)
    Le numéro de chaque caractère est donné par le standard Unicode.
    Les caractères de numéro 0 à 127 sont codés sur un octet dont le bit de poids fort est toujours nul.
    Les caractères de numéro supérieur à 127 sont codés sur plusieurs octets. Dans ce cas, les bits de poids fort du premier octet forment une suite de 1 de longueur égale au nombre d'octets utilisés pour coder le caractère, les octets suivants ayant 10 comme bits de poids fort.

    Définition du nombre d'octets utilisés

    Représentation binaire UTF-8 Signification
    0xxxxxxx 1 octet codant 1 à 7 bits
    110xxxxx 10xxxxxx 2 octets codant 8 à 11 bits
    1110xxxx 10xxxxxx 10xxxxxx 3 octets codant 12 à 16 bits
    11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 4 octets codant 17 à 21 bits

    Exemple

    Exemples de codage UTF-8
    Caractère Numéro du caractère Codage binaire UTF-8
    A 65 01000001
    é 233 11000011 10101001
    8364 11100010 10000010 10101100
    𝄞 119070 11110000 10011101 10000100 10011110

    Dans toute chaîne de caractères UTF-8, on remarque que :
    • tout octet de bit de poids fort nul code un caractère US-ASCII sur un octet ;
    • tout octet de bits de poids fort valant 11 est le premier octet d'un caractère codé sur plusieurs octets ;
    • tout octet de bits de poids fort valant 10 est à l'intérieur d'un caractère codé sur plusieurs octets.

    Titre du popup

    Message du popup !